package com.huawei.hwclouds.lubanops.demo.common.task;

import java.util.Date;

/**
 * @author y00438022
 * @since 2020/10/11
 **/
public interface BusinessTaskSynchronizer {

    /**
     * 根据上一次的时间以及目标时间获取锁
     *
     * @param business             业务名称
     * @param oldTime              历史时间
     * @param targetTime           目标时间
     * @param clientName           客户端名称
     * @param lastUpdateTimeString
     * @return
     */
    public boolean acquireLock(String business, long oldTime, long targetTime, String clientName,
        String lastUpdateTimeString);

    /**
     * 根据业务查询
     *
     * @param business
     * @return
     */
    public BusinessItem getByBusiness(String business);

    /**
     * 创建新的业务
     *
     * @param item
     */
    public void createBusinessItem(BusinessItem item);

    /**
     * 获取系统时间
     *
     * @return
     */
    public Date getBusinessTime();

    /**
     * 插入执行历史
     *
     * @param historyItem 一次历史执行的信息
     */
    public void insertHistory(ExecuteHistory historyItem);

    /**
     * 删除某个时间之前的历史记录
     *
     * @param date
     * @return
     */
    public int deleteHistoryBefore(String business, Date date);

}
